const express = require('express');
const PDFDocument = require('pdfkit');
const mysql = require('mysql');
const address = require('../MySql/index');
const sql = mysql.createConnection(address.mysql);

const router = express.Router();

// 修改路由路径以匹配 index.js 中的引用
router.get('/exportPDF', async (req, res) => {
    const userId = req.body.userId; // 使用 req.query 而不是 req.body，因为这是 GET 请求
    
    try {
        // 从数据库中获取用户数据
        const [userData] = await new Promise((resolve, reject) => {
            sql.query('SELECT * FROM user_info WHERE id = ?', [userId], (err, results) => {
                if (err) {
                    reject(err);
                } else {
                    resolve(results);
                }
            });
        });

        if (!userData || userData.length === 0) {
            return res.status(404).send('User not found');
        }

        // 创建一个新的PDF文档
        const doc = new PDFDocument();

        // 将PDF文档作为响应流返回给客户端
        res.setHeader('Content-Type', 'application/pdf');
        res.setHeader('Content-Disposition', `attachment; filename=${userId}_profile.pdf`);

        // 将PDF文档写入响应流
        doc.pipe(res);

        // 设置页面边距
        const margin = 50;

        // 计算标题文本宽度
        const titleText = `${userData.userName}的病例`;
        const titleWidth = doc.widthOfString(titleText, { size: 28 });

        // 计算标题文本的起始位置以实现水平居中
        const titleX = (doc.page.width - titleWidth) / 2;

        // 添加标题并水平居中
        doc.fontSize(28)
           .fillColor('#000000') // 设置文本颜色为黑色
           .text(titleText, titleX, margin);

        // 添加分隔线
        doc.moveTo(margin, margin + 40)
           .lineTo(doc.page.width - margin, margin + 40)
           .stroke();

        // 用户信息部分的边框
        const userInfoMargin = margin + 60;
        const userInfoWidth = doc.page.width - 2 * margin;
        const userInfoHeight = 150; // 根据内容调整高度

        // 绘制边框
        doc.rect(margin, userInfoMargin, userInfoWidth, userInfoHeight)
           .stroke();

        // 添加用户信息
        doc.fontSize(15)
           .fillColor('#333333') // 设置文本颜色为深灰色
           .text(`姓名：${userData.userName}`, margin + 10, userInfoMargin + 10)
           .text(`年龄: ${userData.age}`, margin + 10, userInfoMargin + 35)
           .text(`性别: ${userData.sex === 1 ? '男' : '女'}`, margin + 10, userInfoMargin + 60)
           .text(`手机号: ${userData.phone}`, margin + 10, userInfoMargin + 85)
           .text(`家庭地址: ${userData.address}`, margin + 10, userInfoMargin + 110);

        // 结束PDF文档的创建
        doc.end();
    } catch (error) {
        console.error('生成pdf失败', error);
        res.status(500).send('导出pdf失败');
    }
});

module.exports = router;